---
title: Excelのフィル
description: Excelのフィル
---

## **シンプルなフィル**

### 概要
テンプレートファイルを基に、オブジェクトまたは Map を使用してExcelにデータをフィルします。

### サンプルフィルテンプレート
![img](/images/docs/fill/simpleFill_file.png)
### サンプルフィル結果
![img](/images/docs/fill/simpleFill_result.png)
#### サンプルオブジェクト
```java
@Getter
@Setter
@EqualsAndHashCode
public class FillData {
    private String name;
    private double number;
    private Date date;
}
```

#### サンプルコード
```java
@Test
public void simpleFill() {
    String templateFileName = "path/to/simple.xlsx";

    // オブジェクトを使用したフィル方法
    FillData fillData = new FillData();
    fillData.setName("张三");
    fillData.setNumber(5.2);
    FastExcel.write("simpleFill.xlsx")
        .withTemplate(templateFileName)
        .sheet()
        .doFill(fillData);

    // Mapを使用したフィル方法
    Map<String, Object> map = new HashMap<>();
    map.put("name", "张三");
    map.put("number", 5.2);
    FastExcel.write("simpleFillMap.xlsx")
        .withTemplate(templateFileName)
        .sheet()
        .doFill(map);
}
```

---

## **リストのフィル**

### 概要
複数のデータ項目をテンプレートリストにフィルし、メモリバッチ操作とファイルキャッシュ分割フィルをサポートします。

### サンプルフィルテンプレート
![img](/images/docs/fill/listFill_file.png)
### サンプルフィル結果
![img](/images/docs/fill/listFill_result.png)

#### サンプルコード
```java
@Test
public void listFill() {
    String templateFileName = "path/to/list.xlsx";

    // すべてのデータを一度にフィルする方法
    FastExcel.write("listFill.xlsx")
        .withTemplate(templateFileName)
        .sheet()
        .doFill(data());

    // 分割してフィルする方法
    try (ExcelWriter writer = FastExcel.write("listFillBatch.xlsx").withTemplate(templateFileName).build()) {
        WriteSheet writeSheet = FastExcel.writerSheet().build();
        writer.fill(data(), writeSheet);
        writer.fill(data(), writeSheet);
    }
}
```

---

## **複雑なフィル**

### 概要
リストや通常の変数を含むさまざまなデータ型をテンプレートにフィルします。

### サンプルフィルテンプレート
![img](/images/docs/fill/complexFill_file.png)
### サンプルフィル結果
![img](/images/docs/fill/complexFill_result.png)

#### サンプルコード
```java
@Test
public void complexFill() {
    String templateFileName = "path/to/complex.xlsx";

    try (ExcelWriter writer = FastExcel.write("complexFill.xlsx").withTemplate(templateFileName).build()) {
        WriteSheet writeSheet = FastExcel.writerSheet().build();

        // リストデータをフィルし、forceNewRowを有効にする
        FillConfig config = FillConfig.builder().forceNewRow(true).build();
        writer.fill(data(), config, writeSheet);

        // 通常の変数をフィル
        Map<String, Object> map = new HashMap<>();
        map.put("date", "2024年11月20日");
        map.put("total", 1000);
        writer.fill(map, writeSheet);
    }
}
```

---

## **大容量データの複雑なフィル**

### 概要
大容量データのフィルパフォーマンスを最適化し、テンプレートリストが最終行に配置され、後続データは `WriteTable` を使用してフィルされます。

### サンプルフィルテンプレート
![img](/images/docs/fill/complexFillWithTable_file.png)
### サンプルフィル結果
![img](/images/docs/fill/complexFillWithTable_result.png)

#### サンプルコード
```java
@Test
public void complexFillWithTable() {
    String templateFileName = "path/to/complexFillWithTable.xlsx";

    try (ExcelWriter writer = FastExcel.write("complexFillWithTable.xlsx").withTemplate(templateFileName).build()) {
        WriteSheet writeSheet = FastExcel.writerSheet().build();

        // リストデータをフィル
        writer.fill(data(), writeSheet);

        // 他の変数をフィル
        Map<String, Object> map = new HashMap<>();
        map.put("date", "2024年11月20日");
        writer.fill(map, writeSheet);

        // 統計情報をフィル
        List<List<String>> totalList = new ArrayList<>();
        totalList.add(Arrays.asList(null, null, null, "統計: 1000"));
        writer.write(totalList, writeSheet);
    }
}
```

---

## **横方向のフィル**

### 概要
リストデータを横方向にフィルし、動的列数のシナリオに適しています。

### サンプルフィルテンプレート
![img](/images/docs/fill/horizontalFill_file.png)
### サンプルフィル結果
![img](/images/docs/fill/horizontalFill_result.png)

#### サンプルコード
```java
@Test
public void horizontalFill() {
    String templateFileName = "path/to/horizontal.xlsx";

    try (ExcelWriter writer = FastExcel.write("horizontalFill.xlsx").withTemplate(templateFileName).build()) {
        WriteSheet writeSheet = FastExcel.writerSheet().build();

        FillConfig config = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
        writer.fill(data(), config, writeSheet);

        Map<String, Object> map = new HashMap<>();
        map.put("date", "2024年11月20日");
        writer.fill(map, writeSheet);
    }
}
```

---

## **複数リストの組み合わせフィル**

### 概要
複数のリストを同時にフィルし、リスト間を接頭辞で区別します。

### サンプルフィルテンプレート
![img](/images/docs/fill/compositeFill_file.png)
### サンプルフィル結果
![img](/images/docs/fill/compositeFill_result.png)

#### サンプルコード
```java
@Test
public void compositeFill() {
    String templateFileName = "path/to/composite.xlsx";

    try (ExcelWriter writer = FastExcel.write("compositeFill.xlsx").withTemplate(templateFileName).build()) {
        WriteSheet writeSheet = FastExcel.writerSheet().build();

        // FillWrapperを使用して複数のリストをフィル
        writer.fill(new FillWrapper("data1", data()), writeSheet);
        writer.fill(new FillWrapper("data2", data()), writeSheet);
        writer.fill(new FillWrapper("data3", data()), writeSheet);

        Map<String, Object> map = new HashMap<>();
        map.put("date", new Date());
        writer.fill(map, writeSheet);
    }
}
```

---

## **フィル使用シナリオのまとめ**

| 機能               | 説明                                                                                      | サンプルコード              |
|--------------------|-------------------------------------------------------------------------------------------|-----------------------|
| 最も単純なフィル        | オブジェクトまたは Map を使用して単純なデータをフィルする方法                                                              | [simpleFill](#1)      |
| リストのフィル           | リストデータをテンプレートにフィルし、分割フィルをサポート                                                        | [listFill](#2)        |
| 複雑なフィル            | リストや通常の変数など、さまざまなデータ型を同じテンプレートにフィルする方法                                           | [complexFill](#3)     |
| 大容量データの複雑なフィル    | 大容量データのフィルパフォーマンスを最適化し、テンプレートリストが最終行に配置される必要がある方法                                               | [complexFillWithTable](#4) |
| 横方向のフィル            | リストデータを横方向にフィルし、動的列データに適している方法                                                    | [horizontalFill](#5)  |
| 複数リストの組み合わせフィル      | 複数のリストを同時にフィルし、リスト間を前置詞で区別する方法                                                   | [compositeFill](#6)   |
